Azure WAF/Policy - Azure Policy Definitions/Remediation - Enable Diagnostic Logging WAF/Powershell/Enable-WAFLogs.ps1 (68 lines of code) (raw):

# Manually Set Variables $workspace = "YourWorkspace" $workspaceRG = "YourRG" # Prepare Modules Write-Verbose "Checking for Azure module..." $AzModule = Get-Module -Name "Az.*" -ListAvailable if ($AzModule -eq $null) { Write-Verbose "Azure PowerShell module not found" # Check for Admin Privileges $currentPrincipal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent()) $isadmin = ($currentPrincipal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) if($isadmin -eq $False){ # No Admin, install to current user Write-Warning -Message "Can not install Az Module. You are not running as Administrator" Write-Warning -Message "Installing Az Module to Current User Scope" Install-Module Az -Scope CurrentUser -Force Install-Module Az.Security -Scope CurrentUser -Force } Else{ # Admin, install to all users Install-Module Az -Force Install-Module Az.Security -Force } else { if ($AzModule.Name -notcontains "Az.FrontDoor") { Write-Verbose "Azure FrontDoor PowerShell module not found" if($isadmin -eq $False){ Write-Warning -Message "Can not install Az FrontDoor Module. You are not running as Administrator" Write-Warning -Message "Installing Az FrontDoor Module to Current User Scope" Install-Module Az.FrontDoor -Scope CurrentUser -Force } Else{ # Admin, install to all users Install-Module Az.FrontDoor -Force } } } } # Check/Set Execution Policy if ((Get-ExecutionPolicy).value__ -eq '3') { Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Force } # Import Modules Import-Module Az Import-Module Az.FrontDoor # Login to Azure Login-AzAccount # Get All Subs $Subscriptions = Get-AzSubscription # Create Diagnostic Settings $wsid = (Get-AzOperationalInsightsWorkspace -Name $workspace -ResourceGroupName $workspaceRG).ResourceId foreach ($Subscription in $Subscriptions) { Select-AzSubscription -Subscription $Subscription $agws = Get-AzApplicationGateway | Where-Object ($_.WebApplicationFirewallConfiguration.Enabled -eq $true) foreach ($agw in $agws){ $agwname = $agw.Name if ($agw.WebApplicationFirewallConfiguration.Enabled -eq $true){ Set-AzDiagnosticSetting -Name "${agwname}-Diag" -ResourceId $agw.Id -WorkspaceId $wsid -Category ApplicationGatewayAccessLog,ApplicationGatewayPerformanceLog,ApplicationGatewayFirewallLog -MetricCategory AllMetrics -Enabled $true -RetentionEnabled $False -RetentionInDays 0 -ErrorAction SilentlyContinue } } $fds = Get-AzFrontDoor foreach ($fd in $fds){ $fdname = $fd.Name if ($fd.FrontendEndpoints.WebApplicationFirewallPolicyLink -ne $null){ Set-AzDiagnosticSetting -Name "${fdname}-Diag" -ResourceId $fd.Id -WorkspaceId $wsid -Category FrontdoorAccessLog,FrontdoorWebApplicationFirewallLog -MetricCategory AllMetrics -Enabled $true -RetentionEnabled $False -RetentionInDays 0 -ErrorAction SilentlyContinue } } }